#pragma once

#include <typedef.h>
//
#include <semaphore.hpp>
#include <task_run.hpp>
// 由Python生成
#include <py_settings_struct.hpp>

// 全局设置变量
extern settings_s* g_Settings;

class SettingsAutoSave : public TaskRun
{
public:
	SettingsAutoSave();
	virtual ~SettingsAutoSave();

protected:
	virtual void Run(void* arg);
};

class Settings : TaskRun
{
public:
	Settings();
	virtual ~Settings();
	static Settings* Instance(void);
	void Init(void);
	void Start(void* arg = nullptr);
	// 保存
	void Save(void);
	// 载入
	void Load(void);
	// 载入配置文件
	void LoadFromFile(void);
	// 保存配置文件
	void SaveToFile(void);

protected:
	virtual void Run(void* arg);

private:
	// 字符串去全部空格
	void StringTrimedAll(char* out, char* in, int len);
	// 从一行配置中的值载入到变量中
	void LoadValue(char* line);



private:
	SettingsAutoSave m_AutoSave;
	Semaphore m_SemSigSave;
	Semaphore m_SemRwSave;
	int m_NeedSave;
};
